package com.iwhalecloud.bss.kite.cucc.order.accept.chain;

import com.iwhalecloud.bss.kite.common.chain.IHandler;
import com.iwhalecloud.bss.kite.order.client.dto.OrderRequest;

import java.util.Objects;

/**
 * <Description> <br>
 * 订单受理流程责任链抽象类
 * @author xiao.xuzhang<br>
 * @version 1.0<br>
 * @taskId <br>
 * @CreateDate 2020年2月12日 <br>
 * @since R9.0<br>
 * @see com.iwhalecloud.bss.kite.cucc.order.accept.chain <br>
 */
public abstract class AbstractOrderHandler implements IHandler<OrderRequest> {

    /**
     * 是否执行此处理器<br>
     * 大部分处理器都是订单预校验流程执行，订单提交流程不行执，如果不是此逻辑，覆盖此方法重写
     */
    @Override
    public boolean canHandle(OrderRequest orderRequest) {
        if (Objects.equals(Boolean.FALSE, orderRequest.getPreCheck())) {
            // 订单提交流程不执行
            return false;
        }

        return true;
    }

    @Override
    public void beforeHandle(OrderRequest orderRequest) {
        orderRequest.getHandlerClassNames().add(this.getClass().getSimpleName());
    }
}
